1. Field of Use
The present invention relates to a multiprocessor system having distributed shared resources and dynamic global data replication. It also relates to the related method for dynamic allocation of global data.
2. Prior Art
Modern data processing systems which may perform several processes at the same time are defined multiprocessing systems. While a program may be defined as a sequence of ordered instructions which perform on a set of data, a process is defined as "an address space, a thread of control operating within that address space and the set of required system resources."
The execution of a program requires the creation of one or more processes, that is, the set up, in terms of addressable space, and the organization of the required resources and their operation. The data needed for program execution and on which the program operates must be loaded into the process space. A physical working memory space must necessarily correspond to the process space as a material support for the data.
In a multiprogramming system (or even simply in a multiprocessing system), the joint generation of a plurality of processes is implied. Then it may happen that some of the data used in different processes, in case at subsequent times, are the same for more processes. These data are defined as "shared data."
The problem has therefore arisen of avoiding loading the same data used in more processes, simultaneously or subsequently active, in an address space, hence in a physical memory space, differing for each process, with the need to replicate the same information for each process or to move it from one space to another, depending on the process. Therefore, the concept of shared memory, typical of the UNIX* operating system, has arose, as memory space intended for storing shared data. The several processes which must operate on shared data, get the shared data from this shared memory. FNT * Registered Trademark of AT&T.
In the modern data processing systems, in order to obtain higher performance, a plurality of processors are jointly used which may jointly and simultaneously execute a plurality of processes. The processors are interconnected by a system bus through which they communicate among themselves and with common shared resources, such as input/output units and working memories.
To overcome the performance limitations imposed by the system bus and to reduce competition in gaining access to the system bus, local memories are also used. A local memory is related to a processor and may be accessed by the related processor without the need to obtain access to the system bus. Local memories are preferably used to store "local data" used only by the related processor in the processes executed by such processor.
As far as "shared data" is concerned, the multiprocessor architecture poses some problem. It is clear that several processors may operate with a plurality of processes on the same shared data.
Therefore, in a multiprocessor system, the concept may be introduced of local data, shared or unshared, as data used in the processes performed in a single processor and global data that is shared data which is used by more processes executed in different processors. The global data may be stored in a single shared memory which may be accessed through the system bus or stored in one or more local memories to which the unrelated processors may have access through the system bus with the previously indicated drawbacks.
To overcome, at least in part, this drawback, the concept of replicated global data has been recently proposed and described in the EP-A-0320607, published Jun. 21, 1989, corresponding to U.S. Pat. No. 4,928,224, issued on May 22, 1990. According to this concept, the global data are stored and replicated in each of the local memories of a multiprocessor system. In this way, each system processor may read the global data in its related local memory without having access to the system bus.
In case where a write operation is performed on global data, access to the system bus is required to write the data in all local memories, thus assuring its consistency everywhere. This drawback is largely balanced by the resulting advantages. A second drawback is that the local memories must be of a size to store the global data. Each of them must therefore have a large capacity which is adequate for storing all the global data which may be required for parallel execution of several processes.